package com.cgnpc.scp.hse.service;

import com.cgnpc.cud.core.domain.AjaxResult;
import com.cgnpc.scp.common.bean.CreateFileInfo;
import com.cgnpc.scp.common.bean.MyPageResult;
import com.cgnpc.scp.common.mybatis.entity.ScpCommonSmsInfo;
import com.cgnpc.scp.common.pojo.UserInfo;
import com.cgnpc.scp.hse.mybatis.entity.HseMeetingInfo;

import java.util.List;
import java.util.Locale;

/******************************
 * 用途说明: 调试HSE管理-会议信息
 * 作者姓名: yblrs
 * 创建时间: 2020/8/20 21:26
 ******************************/
public interface IHseMeetingInfoService {

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---分页查询
     * 参数说明: UserInfo loginUserInfo, T reqEntity
     * 返回值说明: MyPageResult
     ***********************************/
    <T extends HseMeetingInfo> MyPageResult<T> loadByPaging(UserInfo loginUserInfo, T reqEntity);

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---保存或修改
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, List<T> reqEntityList
     * 返回值说明: AjaxResult
     ***********************************/
    <T extends HseMeetingInfo> AjaxResult saveOrUpdate(UserInfo loginUserInfo, Locale reqLocale, List<T> reqEntityList);

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---导出Excel
     * 参数说明: UserInfo loginUserInfo, T reqEntity
     * 返回值说明: CreateFileInfo
     ***********************************/
    <T extends HseMeetingInfo> CreateFileInfo exportExcel(UserInfo loginUserInfo, T reqEntity) throws Exception;

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---根据id查询会议信息
     * 参数说明: T reqEntity
     * 返回值说明: T
     ***********************************/
    <T extends HseMeetingInfo> T queryById(T reqEntity);

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---根据id查询会议信息，只有主体Info信息
     * 参数说明: String id
     * 返回值说明: T
     ***********************************/
    <T extends HseMeetingInfo> T queryByIdOnlyInfo(String id);

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---根据id查询会议信息，只有主体Info信息
     * 参数说明: List<String> idList
     * 返回值说明: List<T>
     ***********************************/
    <T extends HseMeetingInfo> List<T> queryByIdOnlyInfo(List<String> idList);

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---根据id删除会议信息
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, T reqEntity
     * 返回值说明: int
     ***********************************/
    <T extends HseMeetingInfo> AjaxResult deleteById(UserInfo loginUserInfo, Locale reqLocale, T reqEntity);

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---查询需要开始的会议
     * 参数说明: final int pageNum, final int pageSize
     * 返回值说明: List<T>
     ***********************************/
    <T extends HseMeetingInfo> List<T> queryNeedStartList(final int pageNum, final int pageSize);

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---查询需要结束的会议
     * 参数说明: final int pageNum, final int pageSize
     * 返回值说明: List<T>
     ***********************************/
    <T extends HseMeetingInfo> List<T> queryNeedEndList(final int pageNum, final int pageSize);

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---开始会议
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, String id
     * 返回值说明: AjaxResult
     ***********************************/
    AjaxResult startMeetingInfo(UserInfo loginUserInfo, Locale reqLocale, String id) throws Exception;

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---开始会议
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, String id, boolean timerAutoRun
     * 返回值说明: AjaxResult
     ***********************************/
    AjaxResult startMeetingInfo(UserInfo loginUserInfo, Locale reqLocale, String id, boolean timerAutoRun) throws Exception;

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---结束会议
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, String id
     * 返回值说明: AjaxResult
     ***********************************/
    AjaxResult endMeetingInfo(UserInfo loginUserInfo, Locale reqLocale, String id) throws Exception;

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---结束会议
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, String id, boolean timerAutoRun
     * 返回值说明: AjaxResult
     ***********************************/
    AjaxResult endMeetingInfo(UserInfo loginUserInfo, Locale reqLocale, String id, boolean timerAutoRun) throws Exception;

    /**********************************
     * 用途说明: 调试HSE管理-会议信息---取消会议
     * 参数说明: UserInfo loginUserInfo, Locale reqLocale, String id
     * 返回值说明: AjaxResult
     ***********************************/
    AjaxResult cancelMeetingInfo(UserInfo loginUserInfo, Locale reqLocale, String id) throws Exception;

    /**********************************
     * 用途说明: 调试HSE管理-会议信息-参会人员---发送短信
     * 参数说明: String reqHseMeetingInfoId
     * 返回值说明: ScpCommonSmsInfo
     ***********************************/
    ScpCommonSmsInfo sendSmsMessage(String reqHseMeetingInfoId);
}
